﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using Exchange;

namespace Nau.Parametrizer
{
    
    //Клас-helper для бінарної серіалізації\десеріалізації
    public class Serializer
    {
        public Serializer()
        {
        }
        //Серіалізація об"єкта
        public void SerializeObject(string filename, Parameters objectToSerialize)
        {
            //Створюємо файловий потік для подальшого запису
            Stream stream = File.Open(filename, FileMode.Create);
            BinaryFormatter bFormatter = new BinaryFormatter();
            //Серіалізуємо об"єкт, що нам прийшов у вхідних параметрах, у файл через потік
            bFormatter.Serialize(stream, objectToSerialize);
            //Закриваємо потік
            stream.Close();
        }
        //Десеріалізація об"єкта
        public Parameters DeSerializeObject(string filename)
        {
            if (File.Exists(filename))
            {
                //Опис об"єкту параметрів
                Parameters objectToSerialize;
                //Відкриття файлового потоку
                Stream stream = File.Open(filename, FileMode.Open);
                BinaryFormatter bFormatter = new BinaryFormatter();
                //Десеріалізуємо потік у об"єкт
                objectToSerialize = (Parameters)bFormatter.Deserialize(stream);
                //закриваємо потік
                stream.Close();
                //повертаємо десеріалізований об"єкт
                return objectToSerialize;
            }
            else
            {
                return new Parameters();
            }
        }
    }
}
